/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.business.customer.facade;

import info.peigen.hotpot.business.customer.facade.order.authentication.CustomerApplyAuthenticationOrder;
import info.peigen.hotpot.business.customer.facade.order.authentication.CustomerApplyPersonalAuthenticationOrder;
import info.peigen.hotpot.business.customer.facade.order.authentication.CustomerAuditAuthenticationOrder;
import info.peigen.hotpot.business.customer.facade.order.check.CustomerDuplicateCheckOrder;
import info.peigen.hotpot.business.customer.facade.order.check.CustomerPayPasswordCheckOrder;
import info.peigen.hotpot.business.customer.facade.order.login.CustomerLoginOrder;
import info.peigen.hotpot.business.customer.facade.order.login.CustomerLogoutOrder;
import info.peigen.hotpot.business.customer.facade.order.register.CustomerForgotPasswordOrder;
import info.peigen.hotpot.business.customer.facade.order.register.CustomerRegisterOrder;
import info.peigen.hotpot.business.customer.facade.order.update.CustomerUpdateOrder;
import info.peigen.hotpot.business.customer.facade.result.CustomerForgotPasswordResult;
import info.peigen.hotpot.business.customer.facade.result.authentication.CustomerApplyAuthenticationResult;
import info.peigen.hotpot.business.customer.facade.result.authentication.CustomerApplyPersonalAuthenticationResult;
import info.peigen.hotpot.business.customer.facade.result.authentication.CustomerAuditAuthenticationResult;
import info.peigen.hotpot.business.customer.facade.result.check.CustomerDuplicateCheckResult;
import info.peigen.hotpot.business.customer.facade.result.check.CustomerPayPasswordCheckResult;
import info.peigen.hotpot.business.customer.facade.result.login.CustomerLoginResult;
import info.peigen.hotpot.business.customer.facade.result.operator.CustomerOperatorLogoutResult;
import info.peigen.hotpot.business.customer.facade.result.register.CustomerRegisterResult;
import info.peigen.hotpot.business.customer.facade.result.register.CustomerUpdateResult;

/**
 * <b>(CustomerService)</b>
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2021/7/28
 */
@SuppressWarnings("unused")
public interface CustomerServiceFacade {
    /**
     * 客户注册
     *
     * @param order CustomerRegisterOrder
     *
     * @return CustomerRegistResult
     */
    CustomerRegisterResult register(CustomerRegisterOrder order);

    /**
     * 操作员登录
     *
     * @param order CustomerLoginOrder
     *
     * @return CustomerOperatorLoginResult
     */
    CustomerLoginResult login(CustomerLoginOrder order);

    /**
     * 客户退出登录-实际上是操作员退出登录
     *
     * @param order CustomerOperatorLogoutOrder
     *
     * @return CustomerOperatorLogoutResult
     */
    CustomerOperatorLogoutResult logout(CustomerLogoutOrder order);

    /**
     * 检查交易密码
     *
     * @param order CustomerCheckOrder
     *
     * @return CustomerCheckResult
     */
    CustomerPayPasswordCheckResult checkPayPassword(CustomerPayPasswordCheckOrder order);

    /**
     * 更新认证
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult updateVerify(CustomerUpdateOrder order);

    /**
     * 更新邮箱
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult updateEmail(CustomerUpdateOrder order);

    /**
     * 更新手机号码
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult updateMobile(CustomerUpdateOrder order);

    /**
     * 忘记交易密码
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult forgotPayPassword(CustomerUpdateOrder order);

    /**
     * 忘记登录密码
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult forgotLoginPassword(CustomerUpdateOrder order);

    /**
     * 重置交易密码
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult updatePayPassword(CustomerUpdateOrder order);

    /**
     * 更新登录密码
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult updateLoginPassword(CustomerUpdateOrder order);

    /**
     * 客户忘记密码重新设置密码
     *
     * @param customerForgotPasswordOrder order
     *
     * @return CustomerForgotPasswordResult
     */
    CustomerForgotPasswordResult forgotPassword(CustomerForgotPasswordOrder customerForgotPasswordOrder);

    /**
     * 客户重复判断
     *
     * @param order CustomerDuplicateCheckOrder
     *
     * @return CustomerDuplicateCheckResult
     */
    CustomerDuplicateCheckResult duplicateCheck(CustomerDuplicateCheckOrder order);

    /**
     * 客户实名提交
     *
     * @param order CustomerApplyAuthenticationOrder
     *
     * @return CustomerApplyAuthenticationResult
     */
    CustomerApplyAuthenticationResult applyAuthentication(CustomerApplyAuthenticationOrder order);

    /**
     * 客户个人实名认证
     *
     * @param order CustomerApplyPersonalAuthenticationOrder
     *
     * @return CustomerApplyPersonalAuthenticationResult
     */
    CustomerApplyPersonalAuthenticationResult applyPersonalAuthentication(CustomerApplyPersonalAuthenticationOrder order);

    /**
     * 客户实名审核
     *
     * @param order CustomerAuditAuthenticationOrder
     *
     * @return CustomerAuditAuthenticationResult
     */
    CustomerAuditAuthenticationResult auditAuthentication(CustomerAuditAuthenticationOrder order);

    /**
     * 头像和昵称
     *
     * @param order CustomerUpdateOrder
     *
     * @return CustomerUpdateResult
     */
    CustomerUpdateResult updateAvatarAndNickname(CustomerUpdateOrder order);

}
